//
// Copyright (c) 2024 BPer
//
#ifndef SRC_BPERRTC_BPERPLAY_H_
#define SRC_BPERRTC_BPERPLAY_H_
#include <bperrtc/BPerRtcStream.h>

typedef struct{
	BPerRtcPlayStream* playStream;
	void (*update_rtt)(BPerRtcContext *context, BPerRtcPlayStream* playStream,uint32_t ssrc, int32_t rtt);
	int32_t (*on_rtcp)(BPerRtcContext *context, BPerRtcPlayStream* playStream,BPerRtcpCommon *rtcp);
	int32_t (*on_rtp)(BPerRtcContext *context, BPerRtcPlayStream* playStream,char *data, int32_t nb_data) ;
	int32_t (*on_rtcp_sr)(BPerRtcContext *context, BPerRtcPlayStream* playStream,BPerRtcpCommon *rtcp) ;
#if BPer_Enable_RTC_Audio
	BPerPlayTrackAudio* (*get_audio_track)(BPerRtcContext *context, BPerRtcPlayStream* playStream,uint32_t ssrc);
#endif
#if BPer_Enable_RTC_Video
	BPerPlayTrackVideo* (*get_video_track)(BPerRtcContext *context, BPerRtcPlayStream* playStream,uint32_t ssrc);
#endif
	int32_t (*on_rtcp_xr)(BPerRtcContext *context, BPerRtcPlayStream* playStream,BPerRtcpCommon *rtcp);
	void (*update_send_report_time)(BPerRtcContext *context, BPerRtcPlayStream* playStream,uint32_t ssrc,
			 BPerNtp *ntp, uint32_t rtp_time);
	int32_t (*send_rtcp_xr_rrtr)(BPerRtcContext *context, BPerRtcPlayStream* playStream);
	int32_t (*send_rtcp_rr)(BPerRtcContext *context, BPerRtcPlayStream* playStream);
	int32_t (*send_periodic_twcc)(BPerRtcContext *context, BPerRtcPlayStream* playStream);
}BPerRtcPlay;


#endif /* SRC_BPERRTC_BPERPLAY_H_ */
